<script>
    //   如何让数据库回退到某个具体的迁移版本？

            /*
                   在 EF Core 中，要将数据库回滚到某个特定的迁移节点（保留该节点之后的数据变化），
                   
                   可以通过指定目标迁移版本来实现。具体操作如下：
            */

            /*
                一、核心命令

                        使用 Update-Database 命令并指定目标迁移的名称，语法如下：

                        1、 在 Package Manager Console (PMC) 中：

                                Update-Database 目标迁移名称

                        2、在 .NET CLI 中

                                dotnet ef database update 目标迁移名称
            */

            /*
                二、详细步骤

                        1、查看现有迁移记录

                                首先确认需要回滚到的目标迁移名称，可通过以下命令列出所有迁移：

                                            # PMC(包管理器控制台(PMC)
                                            Get-Migrations

                                            # .NET CLI (命令行界面)
                                            dotnet ef migrations list

                                命令会显示所有迁移的名称及状态（如 [X] 表示已应用到数据库），例如：

                                        20230101_InitialCreate (已应用)
                                        20230110_AddUserTable (已应用)
                                        20230120_AddOrderTable (已应用)  # 假设要回滚到这里
                                        20230201_AddProductTable (已应用)

                        2、执行回滚操作

                                假设要回滚到 20230120_AddOrderTable 这个迁移节点，执行：

                                        # PMC
                                            Update-Database 20230120_AddOrderTable

                                        # .NET CLI
                                            dotnet ef database update 20230120_AddOrderTable

                                ★、EF Core 会自动执行目标迁移之后所有迁移的 Down() 方法，将数据库结构还原到目标迁移时的状态，且会保留目标迁移节点及之前的数据。
                        


                        3、回滚到初始状态（可选）

                                如果需要回滚到数据库创建前的初始状态（清空所有表结构，但不删除数据库），可指定 0 作为目标：

                                        # PMC

                                                Update-Database 0

                                        # .NET CLI

                                                dotnet ef database update 0
            */

           /*
                 三、注意事项

                            1、Down() 方法的重要性

                                        回滚依赖于迁移文件中 Down() 方法的实现。
                                        
                                        如果之前的迁移未正确编写 Down() 逻辑（例如只写了 Up() 没写 Down()），可能导致回滚失败或数据丢失。

                            2、数据安全
                                        回滚会删除目标迁移之后新增的表 / 字段，但不会删除目标迁移节点及之前存在的数据。

                            3、复杂场景处理
                            
                                        如果回滚失败（如出现数据冲突），可手动修改目标迁移之后的 Down() 方法，
                                        
                                        或直接操作数据库修正结构后，重新创建迁移历史（参考之前 “重建迁移记录” 的方法）。
           */
</script>